The invention relates generally to computer security systems using hardware tokens and more particularly to systems and methods for protecting information used for decrypting data transferred within a computer system.
Secure computer systems are known which use cryptographic techniques to encrypt and decrypt data sent from one computer or user to another computer within a network. In typical public key cryptographic systems, digital signature key pairs, such as a signature private key and a verification public key, are used to authenticate a digital signature of a client to ensure that a message sent by client actually came from the client sending the message and has not been altered. Generally, data is digitally signed by a sender using the signature private key and authenticated by a recipient using the verification public key. In addition to digital signature key pairs, encryption key pairs are also generally used to encrypt the data being sent from one client to another client. An encryption key pair typically includes a decryption private key and an encryption public key. Data is encrypted using the encryption public key and decrypted by a recipient using the decryption private key. Certificates are generated by a manager or trusted certification authority for the public keys of the private/public key pair to certify that the keys are authentic and valid.
The private keys must be securely maintained to avoid loss of security in the system. Hence some systems use a user password or data string, to encrypt the decryption private key and/or the signature private key while they are not being used or when archived. For example, an operator may be asked to select a password which is then typed into a computer system upon initialization. The computer system applies a one way function or hash process on the password to generate a symmetric encryption key, referred to as passkeys. The symmetric encryption key is used to initially encrypt the decryption private key and the digital signature private key or other sensitive data. This encrypted information may be stored as an operator profile file within the secure system. During normal operation, the previously encrypted decryption private key and/or encrypted digital signature private keys are subsequently decrypted by regenerating the symmetric key using the password. The decrypted private keys are then used to decrypt data and/or digitally sign encrypted data.
In addition, the hash process may generate an integrity key which applies an integrity value to the private key to verify the encrypted private key is authentic thereby indicating proper integrity. The password, or other data string, is used as a multipurpose data string in that the information is used both to encrypt a private key upon initialization and subsequently used to decrypt the encrypted private key when the private key is to be used to decrypt data to be sent within the system or to sign data sent in the system. In addition, the data string is used to authenticate a user since that password is unique to a given computer or individual. A problem arises in maintaining a proper level of security with user-defined passwords because the data strings used to initially encrypt the private keys should be random and of a suitable length to prevent a comprise in security by a unscrupulous hacker. When users are asked to create their own password or data string and enter it on a keyboard, the system is at risk by allowing the keyboard to be viewed by another person during the password entry process which may occur on every user login. Conventional password keyboard entry systems can also limit the randomness and length of the passwords since an operator may not readily remember a long random password or data string.
Attempts have been made to facilitate improved security through the use of hardware tokens which may be a storage and processing element such as a plastic key containing a RAM chip and microprocessor that may contain a user's private keys and/or certificates. Such hardware tokens typically perform all of the cryptographic operations such as decrypting received data and signing data with a private key. In this way, the private keys are not stored on the system and available for possible detection by a hacker. Although useful in protecting secret information, systems utilizing such sophisticated hardware tokens that contain processing capabilities are often quite costly for large secure cryptographic systems.
Other conventional hardware token systems that use a remote storage element or processing unit typically store information that only authenticates a given user, namely a personal identification number, which identifies the storage element holder as the user. Data used for initially encrypting highly sensitive data such as private keys and later decrypting the private keys for use in public key cryptography systems is typically not stored on such hardware token devices.
Moreover, where a password needs to be entered for each software application being used on the system, the repeated entry of the same password, or the maintenance of multiple passwords which should be significantly random and of suitable length, is a difficult task for many operators. Other known hardware token mechanisms contain a stored personal identification number along with a stored password and require a user to enter the personal identification number through a keyboard or other mechanism whereafter, if the stored PIN matches the entered pin, the password is released to a host system such as a computer terminal. However, the data string does not generally contain data used for additionally securing private keys. Also, these systems are often more costly since they require the capability of comparing PIN numbers and releasing passwords so that if a device was stolen, the thief could obtain the PIN from the token and enter the PIN in a system to gain access to the system.
Consequently there exists a need for a system and method for protecting a multipurpose data string used for both decrypting data and for authenticating the user, that provides a suitable length and random data string that is not readily detected upon use. Moreover, it would be advantageous if such a system and method was of low cost and would not readily operate if the remote storage element were lost or unscrupulously obtained by an unauthorized operator.